<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html>
<head>
<title>DRV_I2C_Initialize Function</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="generator" content="Doc-O-Matic" />
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <link rel="STYLESHEET" href="default.css" type="text/css" />

<script type="text/javascript" src="scripts.js"></script>
</head>
<body class="Element700" onload="onBodyLoadEx('frames.html', 'topic', '00263.html');" onmousedown="onBodyMouseDown();">

<!-- Begin Popups -->

<!-- End Popups -->

<!-- Begin Page Header -->
<div class="Element710" id="areafixed">
<div class="Element94">
<a href="00007.html" target="topic">Driver Libraries Help</a> &gt; <a href="00058.html" target="topic">I2C Driver Library Help</a> &gt; <a href="00059.html" target="topic">Library Interface</a> &gt; a) System Functions &gt; <a href="00263.html" target="topic">DRV_I2C_Initialize Function</a></div>
<div class="Element92">
<table width="100%" cellspacing="0" cellpadding="0">
<tr><td width="25%">
<div class="Element1">
MPLAB Harmony Core Help</div>
</td><td width="25%">
<div class="Element2">
<a href="contents.html" target="tocidx">Contents</a> | <a href="00007.html" target="topic">Home</a></div>
</td><td width="25%">
<div class="Element90">
<a href="00059.html" target="topic">Previous</a> | <a href="00059.html" target="topic">Up</a> | <a href="00267.html" target="topic">Next</a></div>
</td><td width="25%">
<div class="Element96">
<a href="mailto:docerrors@microchip.com&subject=MPLAB Harmony Documentation Feedback (Topic ID: DRV_I2C_Initialize@SYS_MODULE_INDEX@SYS_MODULE_INIT * const Topic Title: DRV_I2C_Initialize Function)&body=Thank you for your feedback! Please include a description of your feedback, and indicate whether you are reporting an an error in the documentation or an enhancement.">Documentation Feedback</a><br> <a href="http://support.microchip.com" target="_blank">Microchip Support</a></div>
</td></tr></table><div class="Element5">
DRV_I2C_Initialize Function</div>
</div>
</div>

<!-- End Page Header -->

<!-- Begin Client Area -->
<div class="Element720" id="areascroll">
<div class="Element721">

<!-- Begin Page Content -->
<a name="PageContent"></a><div class="Element58">
<a name="4465736372697074696F6E"></a><div class="Element11">
<div class="Element10">
<p class="Element10">
This routine initializes the I2C driver instance for the specified driver index, making it ready for clients to open and use it. The initialization data is specified by the init parameter. The initialization may fail if the number of driver objects allocated are insufficient or if the specified driver instance is already initialized. The driver instance index is independent of the I2C peripheral instance it is associated with. For example, driver instance 0 can be assigned to I2C peripheral instance 2.</p></div>
</div>
<a name="43"></a><div class="Element99">
C</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><a href="01189.html" target="topic">SYS_MODULE_OBJ</a> <strong><span style="color: #000000">DRV_I2C_Initialize</span></strong>(
    <strong><span style="color: #000080">const</span></strong> <a href="01183.html" target="topic">SYS_MODULE_INDEX</a> <strong><span style="color: #000000">drvIndex</span></strong>, 
    <strong><span style="color: #000080">const</span></strong> <a href="01184.html" target="topic">SYS_MODULE_INIT</a> * <strong><span style="color: #000080">const</span></strong> <strong><span style="color: #000000">init</span></strong>
);</pre></div></div>
<a name="507265636F6E646974696F6E73"></a><div class="Element14">
Preconditions</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
None.</p></div>
</div>
<a name="506172616D6574657273"></a><div class="Element14">
Parameters</div>
<div class="Element11">
<div class="Element10">
<div class="Element312">
<div class="TableDiv">
<table cellspacing="0" class="Table3">
<tr>
<td class="Element300" valign="top" width="35%">
<div class="Element301">
Parameters&nbsp;</div></td><td class="Element304" valign="top" width="65%">
<div class="Element305">
Description&nbsp;</div></td></tr><tr>
<td class="Element302" valign="top" width="35%">
<div class="Element303">
drvIndex&nbsp;</div></td><td class="Element306" valign="top" width="65%">
<div class="Element307">
Identifier for the instance to be initialized<br>&nbsp;</div></td></tr><tr>
<td class="Element302" valign="top" width="35%">
<div class="Element303">
init&nbsp;</div></td><td class="Element306" valign="top" width="65%">
<div class="Element307">
Pointer to the init data structure containing any data necessary to initialize the driver.&nbsp;</div></td></tr></table></div></div>
</div>
</div>
<a name="52657475726E73"></a><div class="Element14">
Returns</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
If successful, returns a valid handle to a driver instance object. Otherwise, returns <a href="01190.html" target="topic">SYS_MODULE_OBJ_INVALID</a>.</p></div>
</div>
<a name="52656D61726B73"></a><div class="Element14">
Remarks</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
This routine must be called before any other I2C routine is called. This routine should only be called once during system initialization.</p></div>
</div>
<a name="4578616D706C65"></a><div class="Element14">
Example</div>
<div class="Element11">
<div class="Element10">
<div class="Element13"><div class="Element12"><pre class="Element12"><i><span style="color: #008000">// The following code snippet shows an example I2C driver initialization.</span></i>

<a href="01189.html" target="topic">SYS_MODULE_OBJ</a> objectHandle;

DRV_I2C_CLIENT_OBJ drvI2C0ClientObjPool[DRV_I2C_CLIENTS_NUMBER_IDX0] = {0};
DRV_I2C_TRANSFER_OBJ drvI2C0TransferObjPool[DRV_I2C_QUEUE_SIZE_IDX0] = {0};

DRV_I2C_PLIB_INTERFACE drvI2C0PLibAPI = {
    .read = (DRV_I2C_PLIB_READ)TWIHS0_Read,
    .write = (DRV_I2C_PLIB_WRITE)TWIHS0_Write,
    .writeRead = (DRV_I2C_PLIB_WRITE_READ)TWIHS0_WriteRead,
    .errorGet = (DRV_I2C_PLIB_ERROR_GET)TWIHS0_ErrorGet,
    .callbackRegister = (DRV_I2C_PLIB_CALLBACK_REGISTER)TWIHS0_CallbackRegister,
};

DRV_I2C_INIT drvI2C0InitData = {

    .i2cPlib = &amp;drvI2C0PLibAPI,
    .numClients = DRV_I2C_CLIENTS_NUMBER_IDX0
    .clientObjPool = (uintptr_t)&amp;drvI2C0ClientObjPool[0],
    .interruptI2C = DRV_I2C_INT_SRC_IDX0,
    .queueSize = DRV_I2C_QUEUE_SIZE_IDX0,
    .transferObj = (uintptr_t)&amp;drvI2C0TransferObj[0],
    .clockSpeed = DRV_I2C_CLOCK_SPEED_IDX0,
};

objectHandle = DRV_I2C_Initialize(DRV_I2C_INDEX_0, (<a href="01184.html" target="topic">SYS_MODULE_INIT</a>*)&amp;drvI2C0InitData);
<strong><span style="color: #000080">if</span></strong> (objectHandle == <a href="01190.html" target="topic">SYS_MODULE_OBJ_INVALID</a>)
{
    <i><span style="color: #008000">// Handle error</span></i>
}</pre></div></div>
</div>
</div>
</div>
<!-- End Page Content -->

<!-- Begin Page Footer -->
<div class="Element95">
<a href="00007.html" target="topic">Driver Libraries Help</a> &gt; <a href="00058.html" target="topic">I2C Driver Library Help</a> &gt; <a href="00059.html" target="topic">Library Interface</a> &gt; a) System Functions &gt; <a href="00263.html" target="topic">DRV_I2C_Initialize Function</a></div>
<div class="Element93">
<table width="100%" cellspacing="0" cellpadding="0">
<tr><td width="25%">
<div class="Element3">
MPLAB Harmony Core Help</div>
</td><td width="25%">
<div class="Element4">
<a href="contents.html" target="tocidx">Contents</a> | <a href="00007.html" target="topic">Home</a></div>
</td><td width="25%">
<div class="Element91">
<a href="00059.html" target="topic">Previous</a> | <a href="00059.html" target="topic">Up</a> | <a href="00267.html" target="topic">Next</a></div>
</td><td width="25%">
<div class="Element97">
<a href="mailto:docerrors@microchip.com&subject=MPLAB Harmony Documentation Feedback (Topic ID: DRV_I2C_Initialize@SYS_MODULE_INDEX@SYS_MODULE_INIT * const Topic Title: DRV_I2C_Initialize Function)&body=Thank you for your feedback! Please include a description of your feedback, and indicate whether you are reporting an an error in the documentation or an enhancement.">Documentation Feedback</a><br> <a href="http://support.microchip.com" target="_blank">Microchip Support</a></div>
</td></tr></table></div>

<!-- End Page Footer -->
</div>
</div>

<!-- End Client Area -->
</body></html>